#pragma once
#include "scene_base.h"

// 停障场景类
class StraightStopObs : public SceneBase {
  public:
    StraightStopObs();
    void ShowScene(); // 显示函数，重写基类虚函数
    bool Planning_process() override; // 主函数，重写基类纯虚函数
  public:
    std::unique_ptr<Cone> cone; // 锥桶
    double safedis = 50.0; // 停止距离
};

//停靠站点景类
class StraightStation : public SceneBase {
  public:
    StraightStation();
    void ShowScene(); //显示，重写基类虚函数
    bool Planning_process() override; //主函数，重写纯虚函数
  
  public:
    std::unique_ptr<Point> station; // 停靠站点
    int stop_time = 3; // 停站时间，单位s
};

// 跟车场景类 
class StraightFollow : public SceneBase {
  public:
    StraightFollow();
    void ShowScene(); // 显示函数，重写基类虚函数
    bool Planning_process() override; // 主函数，重写基类纯虚函数
  public:
    std::unique_ptr<CarNormal> carObs; // 障碍物车
    double safeDis = 120.0; // 保持车距
};

// 通过斑马线
class StraightCrosswalk : public SceneBase {
  public:
  StraightCrosswalk();
    bool PersonInCross();
    void ShowScene();
    bool Planning_process() override;
  
  public:
    int people_num = 5;
    // 使用vector存储行人
    std::vector<std::unique_ptr<Person>> people;
    double speedlimit_cross = -2.0;
};